package br.com.monitor.modelos;

import java.io.Serializable;

import br.com.monitor.modelos.Treino;

public class Usuario extends Pessoa implements Serializable {
	
	private InformacoesPessoais informacoesPessoais;
	private InformacoesFisicas informacoesFisicas; 
	
	/**
	 * 
	 * @param nome Nome do usuario.
	 * @param idade Idade do usuario.
	 * @param sexo Sexo do usuario.
	 * @param login Login do usuario.
	 * @param senha Senha do usuario.
	 * @param informacoesFisicas Informacoes Fisicas do usuario.
	 * @throws Exception
	 */
	public Usuario(String nome, int idade, String sexo, String login, String senha, InformacoesFisicas informacoesFisicas) throws Exception {
		super(nome, idade, sexo);
		
		if (informacoesFisicas == null) {
			throw new Exception("Informacoes do usuario incompletas.");
		} 		
		this.informacoesPessoais = new InformacoesPessoais(login, senha); 
		this.informacoesFisicas = informacoesFisicas;
	}
	/**s
	 * @return Retorna o nome do usuario.
	 */
	public String getLogin() {
		return informacoesPessoais.getLogin();
	}
	
	/**
	 * @param login Novo login do usuario.
	 * @throws Exception 
	 */
	public void setLogin(String login) throws Exception {
		informacoesPessoais.setLogin(login);
	}
	
	/**
	 * @return Retorna a senha do usuario.
	 */
	public String getSenha() {
		return informacoesPessoais.getSenha();
	}
	
	/**
	 * 
	 * @param senha Senha do usuario.
	 * @throws Exception Lanca excecao se o numero de caracteres for invalido
	 */
	public void setSenha(String senha) throws Exception {
		informacoesPessoais.setSenha(senha);
	}
	
	
	/**
	 * 
	 * @return Retorna as informacoes fisicas do usuario.
	 */
	public InformacoesFisicas getInformacoesFisicas(){
		return informacoesFisicas;
	}

	public boolean equals(Usuario user) {
		if (!(user instanceof Usuario)) {
			return false;
		}	
		if (this.getLogin().equals(user.getLogin())) {
			return true;
		}
		return false;
	}
	
}